use crate::co;
use crate::decl::*;
use crate::msg::*;
use crate::prelude::*;
use crate::user::privs::*;
pub_struct_msg_ctlcolor! { CtlColorBtn: co::WM::CTLCOLORBTN;
}
pub_struct_msg_ctlcolor! { CtlColorDlg: co::WM::CTLCOLORDLG;
}
pub_struct_msg_ctlcolor! { CtlColorEdit: co::WM::CTLCOLOREDIT;
}
pub_struct_msg_ctlcolor! { CtlColorListBox: co::WM::CTLCOLORLISTBOX;
}
pub_struct_msg_ctlcolor! { CtlColorScrollBar: co::WM::CTLCOLORSCROLLBAR;
}
pub_struct_msg_ctlcolor! { CtlColorStatic: co::WM::CTLCOLORSTATIC;
}
pub_struct_msg_char_code! { DeadChar: co::WM::DEADCHAR;
}
pub struct DisplayChange {
pub depth_bpp: u32,
pub horz_res: u16,
pub vert_res: u16,
}
unsafe impl MsgSend for DisplayChange {
type RetType = ();
fn convert_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> WndMsg {
WndMsg {
msg_id: co::WM::DISPLAYCHANGE,
wparam: self.depth_bpp as _,
lparam: MAKEDWORD(self.horz_res, self.vert_res) as _,
}
}
}
unsafe impl MsgSendRecv for DisplayChange {
fn from_generic_wm(p: WndMsg) -> Self {
Self {
depth_bpp: p.wparam as _,
horz_res: LOWORD(p.lparam as _),
vert_res: HIWORD(p.lparam as _),
}
}
}
pub struct GetFont {}
unsafe impl MsgSend for GetFont {
type RetType = Option<HFONT>;
fn convert_ret(&self, v: isize) -> Self::RetType {
zero_as_none(v).map(|p| unsafe { HFONT::from_ptr(p as _) })
}
fn as_generic_wm(&mut self) -> WndMsg {
WndMsg {
msg_id: co::WM::GETFONT,
wparam: 0,
lparam: 0,
}
}
}
unsafe impl MsgSendRecv for GetFont {
fn from_generic_wm(_: WndMsg) -> Self {
Self {}
}
}
pub struct NcPaint {
pub updated_hrgn: HRGN,
}
unsafe impl MsgSend for NcPaint {
type RetType = ();
fn convert_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> WndMsg {
WndMsg {
msg_id: co::WM::NCPAINT,
wparam: self.updated_hrgn.ptr() as _,
lparam: 0,
}
}
}
unsafe impl MsgSendRecv for NcPaint {
fn from_generic_wm(p: WndMsg) -> Self {
Self {
updated_hrgn: unsafe { HRGN::from_ptr(p.wparam as _) },
}
}
}
pub_struct_msg_empty_handleable! { Paint: co::WM::PAINT;
}
pub struct SetFont {
pub hfont: HFONT,
pub redraw: bool,
}
unsafe impl MsgSend for SetFont {
type RetType = ();
fn convert_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> WndMsg {
WndMsg {
msg_id: co::WM::SETFONT,
wparam: self.hfont.ptr() as _,
lparam: MAKEDWORD(self.redraw as _, 0) as _,
}
}
}
unsafe impl MsgSendRecv for SetFont {
fn from_generic_wm(p: WndMsg) -> Self {
Self {
hfont: unsafe { HFONT::from_ptr(p.wparam as _) },
redraw: LOWORD(p.lparam as _) != 0,
}
}
}
pub struct SetRedraw {
pub can_redraw: bool,
}
unsafe impl MsgSend for SetRedraw {
type RetType = ();
fn convert_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> WndMsg {
WndMsg {
msg_id: co::WM::SETREDRAW,
wparam: self.can_redraw as _,
lparam: 0,
}
}
}
unsafe impl MsgSendRecv for SetRedraw {
fn from_generic_wm(p: WndMsg) -> Self {
Self {
can_redraw: p.wparam != 0,
}
}
}
pub_struct_msg_empty_handleable! { SyncPaint: co::WM::SYNCPAINT;
}